//
//  NSString+LLAdd.m
//  BillRecords
//
//  Created by admin on 2018/10/9.
//  Copyright © 2018年 admin. All rights reserved.
//

#import "NSString+LLAdd.h"

@implementation NSString (LLAdd)

- (BOOL)isEmpty
{
    if ([self isKindOfClass:[NSNull class]]) {
        return YES;
    } else if (self.length == 0) {
        return YES;
    }
    return NO;
}

- (NSString *)removeBlank
{
    return [self stringByReplacingOccurrencesOfString:@" " withString:@""];
}

- (NSString *)removeFirstAndLastBlank
{
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}


- (BOOL)isContainsEmoji
{
    __block BOOL isEomji = NO;
    [self enumerateSubstringsInRange:NSMakeRange(0, self.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
        const unichar hs = [substring characterAtIndex:0];
        // surrogate pair
        if (0xd800 <= hs && hs <= 0xdbff) {
            if (substring.length > 1) {
                const unichar ls = [substring characterAtIndex:1];
                const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                if (0x1d000 <= uc && uc <= 0x1f77f) {
                    isEomji = YES;
                }
            }
        } else {
            // non surrogate
            if (0x2100 <= hs && hs <= 0x27ff && hs != 0x263b) {
                isEomji = YES;
            } else if (0x2B05 <= hs && hs <= 0x2b07) {
                isEomji = YES;
            } else if (0x2934 <= hs && hs <= 0x2935) {
                isEomji = YES;
            } else if (0x3297 <= hs && hs <= 0x3299) {
                isEomji = YES;
            } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50|| hs == 0x231a ) {
                isEomji = YES;
            }
            if (!isEomji && substring.length > 1) {
                const unichar ls = [substring characterAtIndex:1];
                if (ls == 0x20e3) {
                    isEomji = YES;
                }
            }
        }
    }];
    return isEomji;
}

// 分割银行卡号，每段几个数字，分隔符
- (NSString *)segmentBankCardNumWithEachSegmentCount:(int)eachSegmentCount separator:(NSString *)separator
{
    if (self.length == 0) {
        return @"";
    }
    NSInteger count = self.length / eachSegmentCount;
    
    NSInteger restCount = self.length % eachSegmentCount;
    
    NSString *restStr = [self substringWithRange:NSMakeRange(self.length - restCount, restCount)];
    
    NSMutableArray *cardSegmentArray = [NSMutableArray array];
    for (NSInteger i = 0; i < count; i++) {
        
        NSRange range = NSMakeRange(i * eachSegmentCount, eachSegmentCount);
        NSString *subStr = [self substringWithRange:range];
        [cardSegmentArray addObject:subStr];
    }
    
    NSString *firstStr = [cardSegmentArray componentsJoinedByString:separator];
    
    NSString *showCardStr = [NSString stringWithFormat:@"%@%@%@", firstStr, separator, restStr];
    
    // 如果正好整除，去掉最后一个分隔符
    if (restStr.length == 0) {
        showCardStr = [showCardStr substringToIndex:showCardStr.length - 1];
    }
    
    return showCardStr;
}

// 打电话
- (void)callPhone
{
    NSMutableString *kfPhone = [[NSMutableString alloc] initWithFormat:@"telprompt://%@", self];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:kfPhone]];

}

///编码
- (NSString *)urlEncode
{
    NSCharacterSet *allowedCharacters = [NSCharacterSet URLQueryAllowedCharacterSet];
    NSString *encodeString = [self stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
    return encodeString;
}

@end
